package com.alks.function.service.stockdept.pcfactorystockquery;

import com.alks.entity.data.page.PageRecord;
import com.alks.entity.data.response.ResponseInfo;
import com.alks.function.data.dto.stockdept.pcfactorystockwork.CsmDetailDto;
import com.alks.function.data.request.stockdept.pcfactorystockwork.CsmDetAddRequest;
import com.alks.function.data.request.stockdept.pcfactorystockwork.CsmDetRequest;
import com.alks.function.data.request.stockdept.pcfactorystockwork.CsmMtlAddRequest;

import java.math.BigDecimal;

public interface IConsumInService {

    /**
     * 耗品入库查询-待出剩料明细-查询
     * @return 返回结果
     */
    ResponseInfo getCsmInTempQuery();

    /**
     * 耗品入库查询-耗品物料ID生成-查询
     * @param mtlTypeNo 物料类型
     * @return 生成的物料ID
     */
    ResponseInfo csmMtlNoCreat(String mtlTypeNo);

    /**
     * 耗品入库查询-耗品建档-新增
     * @param request 耗品建档请求
     * @return 返回结果
     */
    ResponseInfo csmMtlCreat(CsmMtlAddRequest request);

    /**
     * 耗品入库查询-耗品删除-删除
     * @param mtlNo 删除的物料ID
     * @return 返回结果
     */
    ResponseInfo csmMtlDelete(String mtlNo);

    /**
     * 耗品入库查询-插入待入库耗品-新增
     * @param mtlNo 写入temp表的物料ID
     * @return 返回结果
     */
    ResponseInfo csmInTempAdd(String mtlNo);

    /**
     * 耗品入库查询-待入库明细修改-更新
     * @param mtlNo 要更新的物料
     * @param qty 更新后的数量
     * @param remark 更新后的备注
     * @return 返回结果
     */
    ResponseInfo csmInTempUpdate(String mtlNo, BigDecimal qty, String remark);

    /**
     * 耗品入库查询-待入库耗品删除-删除
     * @param mtlNo 要删除的物料
     * @return 返回结果
     */
    ResponseInfo csmInTempDelete(String mtlNo);

    /**
     * 耗品入库查询-入库明细资料查询-查询
     * @param request 入库明细查询请求
     * @return 返回结果
     */
    PageRecord<CsmDetailDto> getCsmInDetailQuery(CsmDetRequest request);

    /**
     * 耗品入库查询-入库批处理-新增
     * @param mtlNo 要新增的物料
     * @return 返回结果
     */
    ResponseInfo csmInDetailAdd(CsmDetAddRequest mtlNo);

    /**
     * 耗品入库查询-耗品明细删除-删除
     * @param mtlNo 要删除的物料
     * @param slipNo 入库单号
     * @return 返回结果
     */
    ResponseInfo csmInDetailDelete(String mtlNo, String slipNo);
}
